Merge branch 'master' of git://repo.or.cz/mqlkit
[mqlkit.git] / indicators / Relative Vigor Index.mq4
blobc52eb6e8a140aba0a8ecab889d0af4f74bef4977
1 //+------------------------------------------------------------------+\r
2 //|                                            Relative Vigor Index  |\r
3 //|                         Copyright © 2006, Luis Guilherme Damiani |\r
4 //|                                      http://www.damianifx.com.br |\r
5 //|\r
6 //+------------------------------------------------------------------+\r
7 #property copyright "Copyright © 2006, Luis Guilherme Damiani"\r
8 #property link      "http://www.damianifx.com.br"\r
9 \r
10 #property indicator_buffers 2\r
11 #property indicator_separate_window\r
12 //#property indicator_chart_window\r
14 #property indicator_color1 Yellow\r
15 #property indicator_color2 Green\r
16 //#property indicator_color3 Yellow\r
18 //---- input parameters\r
19 extern double length=10;\r
20 //extern int    maxbars=2000;\r
22 //extern string \r
23 //Price_Choice="-----  Typical or Median  --------------";\r
24 //extern bool is_median=true;\r
26 //---- buffers\r
27 double ind1[];\r
28 double ind2[];\r
29 //double ind3[];\r
30 //double AuxBuffer[]; //Smooth\r
32 //+------------------------------------------------------------------+\r
33 //| Custom indicator initialization function                         |\r
34 //+------------------------------------------------------------------+\r
35 int init()\r
36   {\r
37 //---- indicators\r
38    SetIndexStyle(0,DRAW_LINE);\r
39    SetIndexBuffer(0,ind1);\r
40    SetIndexStyle(1,DRAW_LINE);\r
41    SetIndexBuffer(1,ind2);\r
42   // SetIndexStyle(2,DRAW_LINE);\r
43   // SetIndexBuffer(2,ind3);\r
44    SetLevelValue(0,0.0);\r
45 //   SetLevelValue(1,-0.8);\r
46    ArrayInitialize(ind1,0.0);\r
47    ArrayInitialize(ind2,0.0);\r
48 //   ArrayInitialize(ind3,0.0);\r
49 ///   ArrayResize(AuxBuffer,maxbars+3);\r
50  //  ArrayInitialize(AuxBuffer,0.0);\r
51  \r
52    \r
53 //----\r
54    return(0);\r
55   }\r
56 //+------------------------------------------------------------------+\r
57 //| Custor indicator deinitialization function                       |\r
58 //+------------------------------------------------------------------+\r
59 int deinit()\r
60   {\r
61 //---- \r
62    \r
63 //----\r
64    return(0);\r
65   }\r
66 //+------------------------------------------------------------------+\r
67 //| Custom indicator iteration function                              |\r
68 //+------------------------------------------------------------------+\r
70 int start()\r
71   {\r
72    \r
73       int    counted_bars=IndicatorCounted();\r
74       double num=0,denom=0;  \r
75       //---- check for possible errors\r
76       if(counted_bars<0) return(-1);\r
77       int limit=Bars-counted_bars;\r
78   //    if(limit>maxbars)limit=maxbars;      \r
79       //if (limit>Bars-1)limit=Bars-1;   \r
80       //---- \r
81       for (int i = limit; i>=0;i--)\r
82       {\r
83          num=0;denom=0;\r
84          for(int j=0;j<length;j++)\r
85          {\r
86             num=num+v1(i,j);\r
87             denom=denom+v2(i,j);\r
88          }\r
89          if(denom!=0)ind1[i]=num/denom;\r
90               ind2[i]=ind1[i+1];                  \r
91        }\r
92       \r
93 //----\r
94    return(0);\r
95   }\r
96   \r
97  double v1(int x,int y)\r
98  {\r
99     double pr;\r
100     pr=((Close[x+y]-Open[x+y])+2*(Close[x+y+1]-Open[x+y+1])+2*(Close[x+y+2]-Open[x+y+2])+(Close[x+y+3]-Open[x+y+3]))/6;\r
101   return(pr);          \r
102  }\r
103  \r
104  double v2(int x,int y)\r
105  {\r
106     double pr;\r
107     pr=((High[x+y]-Low[x+y])+2*(High[x+y+1]-Low[x+y+1])+2*(High[x+y+2]-Low[x+y+2])+(High[x+y+3]-Low[x+y+3]))/6;\r
108   return(pr);          \r
109  }           \r
110 //+------------------------------------------------------------------+